home *** CD-ROM | disk | FTP | other *** search
/ MacPeople 1998 #2 / MACPEOPLE-1998-NO2.ISO / アップル関連 / ARA PS アップデート / モデム用 / GeoPort⁄Express Modem CNG / GeoPort_Express Modem CNG next >
Text File  |  1996-08-16  |  9KB  |  498 lines

  1. !  Express Modem 2.1
  2. !    Authors:    Kris Kreutzman and Enrico Cadorin
  3. !
  4. !    Copyright:    © 1991-1996 Apple Computer, Inc.    All Rights Reserved.
  5. !
  6. !    revision history:
  7. !        v2.1    as shipped with the ARA 2.1
  8. !
  9. !  'mlts' resource info for this modem:
  10. !    byte 1 == 01 -> modem HAS built-in error correction protocols
  11. !    byte 2 == 01 -> modem HAS built-in data compression protocols
  12. !    byte 3 == 65 -> max number of chars in varstr 7
  13. !    byte 4 == 65 -> max number of chars in varstr 8
  14. !    byte 5 == 65 -> max number of chars in varstr 9
  15. !    
  16. @ORIGINATE
  17. @ANSWER
  18. !
  19. ! ---- Initial modem setup ----
  20. !
  21. ! Setup the modem for the following:
  22. !   Reset to factory settings
  23. !   Standard compression/reliablity
  24. !   Lock serial port speed
  25. !   Serial port hardware handshaking, turn off software handshaking
  26. !   Verbose responces and compression/protocol results
  27. !   CONNECT returns DCE speed
  28. !   Turn off answering
  29. !   Reset or return to command mode on DTR toggle (optional)
  30. !
  31. @LABEL 3
  32. matchclr
  33. matchstr 1 4   "OK¥13¥10"
  34. matchstr 2 101 "ERROR¥13¥10"
  35. write "AT&FE0S95=40S0=0¥13"
  36. matchread 30
  37. inctries
  38. iftries 3 101
  39. !
  40. ! Reset the Modem on setup failure
  41. !
  42. DTRClear
  43. pause 5
  44. DTRSet
  45. flush
  46. jump 3
  47. !
  48. !
  49. @LABEL 4
  50. ! Varstring 4 , reliable link protocol:
  51. !    = 0, handled by computer (ARAP)
  52. !    = 1, handled by modem (PPP)
  53. !    = 2, MNP10 protocol (Cellular protocol, no longer supported)
  54. ifstr 4 5 "1"
  55. ifstr 4 5 "2"
  56. !
  57. ! Varstring 4 == 0, turn off reliable link protocol in modem (ARAP)
  58. matchclr
  59. matchstr 1 9 "OK¥13¥10"
  60. write "AT&Q0¥13"
  61. matchread 30
  62. jump 101
  63. !
  64. !
  65. @LABEL 5
  66. ! Varstring 5, compression protocol:
  67. !    = 0, handled by computer 
  68. !    = 1, handled by modem
  69. ifstr 5 9 "1"
  70. !
  71. ! Varstring 5 == 0, turn off compression protocol in modem.
  72. matchclr
  73. matchstr 1 9 "OK¥13¥10"
  74. write "AT%C0S46=136¥13"
  75. matchread 30
  76. jump 101
  77. !
  78. !
  79. @LABEL 9
  80. ! Varstring 2, modem speaker:
  81. !    = 0, speaker off
  82. !    = 1, speaker on
  83. ifstr 2 13 "1"
  84. pause 5
  85. matchclr
  86. matchstr 1 13 "OK¥13¥10"
  87. write "ATM0¥13"
  88. matchread 30
  89. jump 101
  90. !
  91. ! Modem ready, wait for a call or originate a call
  92. !
  93. @LABEL 13
  94. ifANSWER 82
  95. !
  96. !
  97. ! ---- Originating a call ----
  98. !
  99. ! Varstring 6, dialing mode:
  100. !    = 0, normal dialing
  101. !    = 1, blind dialing
  102. !    = 2, manual dialing
  103. !    otherwise dial as ARA version 1.0
  104. ifstr 6 19 "0"
  105. ifstr 6 17 "1"
  106. ifstr 6 15 "2"
  107. !
  108. ! Dialing for ARA version 1.0
  109. note "^1 をダイアル中..." 3
  110. write "ATD^3¥^^1¥13
  111. jump 32
  112. !
  113. @LABEL 15
  114. ! Display ASK dialog with message.  Goto label 120 if dialog canceled.
  115. ASK 2 "受話器を上げて、^1 をダイアルしてください。発信音が鳴ったら OK をクリックして、受話器を戻してください。" 120
  116. note "手動ダイアル中..." 3
  117. ! X1 to ignore dialtone & busy, D to dial, ¥^ generates data tone
  118. write "ATX1D¥^¥13"
  119. jump 32
  120. !
  121. @LABEL 17
  122. note "ダイアルトーンを無視してダイアル中..." 3
  123. matchclr
  124. matchstr 1 19 "OK¥13¥10"
  125. ! X1 to ignore dialtone & busy
  126. write "ATX1¥13"
  127. matchread 30
  128. jump 101
  129. !
  130. !
  131. !
  132. @LABEL 19
  133. ! Display the full dialstring contained in Varstring 1
  134. note "^1 をダイアル中..." 3
  135. !
  136. ! Varstrings 7, 8 and 9, contain dialstring fragments
  137. !    Long phone numbers may need to be split into smaller groups
  138. !    for the modem to use
  139. !
  140. ! Varstring 3:  "p" for pulse & "t" for tone dialing
  141. ! Varstring 8 == blank (dialstring in varstring 7)
  142. ! Varstring 9 == blank (dialstring in varstrings 7 & 8)
  143. ! Otherwise (dialstring in varstrings 7, 8 & 9)
  144. ! ¥^ is added to the dialstring to force the modem to generate a data tone
  145. ifstr 8 27 " "
  146. ifstr 9 24 " "
  147. !
  148. !  Write dialstring in varstrings 7, 8 & 9
  149. matchclr
  150. matchstr 1 21 "OK¥13¥10"
  151. write "ATD^3^7;¥13"
  152. matchread 400
  153. jump 101
  154.  
  155. @LABEL 21
  156. matchclr
  157. matchstr 1 22 "OK¥13¥10"
  158. write "ATD^3^8;¥13"
  159. matchread 400
  160. jump 101
  161.  
  162. @LABEL 22
  163. write "ATD^3¥^^9¥13"
  164. jump 32
  165. !
  166. !
  167. @LABEL 24
  168. !  Write dialstring in varstrings 7 & 8
  169. matchclr
  170. matchstr 1 25 "OK¥13¥10"
  171. write "ATD^3^7;¥13"
  172. matchread 400
  173. jump 101
  174.  
  175. @LABEL 25
  176. write "ATD^3¥^^8¥13"
  177. jump 32
  178. !
  179. @LABEL 27
  180. !  Write dialstring in varstring 7
  181. write "ATD^3¥^^7¥13"
  182. !
  183. !
  184. !    ---- Connection responce ----
  185. !
  186. ! The following section will parse modem responces of two types:
  187. !   1) PROTOCOL: xxx, COMPRESSION: xxx, CONNECT xxx
  188. !   2) CONNECT xxx/ARQ/V42
  189. !
  190. @LABEL 32
  191. matchclr
  192. matchstr  1  81 "RING¥13¥10"
  193. matchstr  2  33 "NO "
  194. matchstr  3 103 "ERROR¥13¥10"
  195. matchstr  4 104 "BUSY¥13¥10"
  196. matchstr  5 106 "MODEM IN USE¥13¥10"
  197. matchstr  6 107 "DIALING DISABLED¥13¥10"
  198. matchstr  7 108 "BLACKLISTED NUMBER¥13¥10"
  199. matchstr  8 109 "LINE CURRENT DETECTED¥13¥10"
  200. matchstr  9 111 "FORBIDDEN NUMBER¥13¥10"
  201. matchstr 10 113 "UNKNOWN COUNTRY CODE¥13¥10"
  202. matchstr 11  34 "CONNECT "
  203. matchstr 12  60 "PROTOCOL: "
  204. matchstr 13  61 "COMPRESSION: "
  205. matchread 700
  206. ifANSWER 32
  207. jump 105
  208. !
  209. !  Special parsing of "NO xxx" to keep the number of matchstr above
  210. !  below 16 for ARA 1.0 compatability
  211. !
  212. @LABEL 33
  213. matchclr
  214. matchstr  1 102 "DIALTONE¥13¥10"
  215. matchstr  2 103 "CARRIER¥13¥10"
  216. matchstr  3 105 "ANSWER¥13¥10"
  217. matchstr  4 110 "LINE CURRENT¥13¥10"
  218. matchstr  5 112 "DAA¥13¥10"
  219. matchread 10
  220. jump 32
  221.  
  222. !  Parse the speed of connect result codes
  223. !  2400 and 4800 have two entries each
  224. !  to distinguish them from 24000 and 48000
  225. !
  226. @LABEL 34
  227. matchclr
  228. matchstr  1 40 "2400¥13"
  229. matchstr  2 40 "2400/"
  230. matchstr  3 41 "4800¥13"
  231. matchstr  4 41 "4800/"
  232. matchstr  5 42 "7200"
  233. matchstr  6 43 "9600"
  234. matchstr  7 44 "12000"
  235. matchstr  8 45 "14400"
  236. matchstr  9 46 "16800"
  237. matchstr 10 47 "19200"
  238. matchstr 11 48 "21600"
  239. matchstr 12 49 "24000"
  240. matchstr 13 50 "26400"
  241. matchstr 14 51 "28800"
  242. matchread 30
  243. jump 59
  244. !
  245. ! -- Connection rates --
  246. ! CommunicatingAt informs ARA of the raw modem to modem
  247. ! connection speed.
  248. !
  249. @LABEL 40
  250. note "2400 bps で接続中..." 2
  251. CommunicatingAt 2400
  252. jump 70
  253. !
  254. @LABEL 41
  255. note "4800 bps で接続中..." 2
  256. CommunicatingAt 4800
  257. jump 70
  258. !
  259. @LABEL 42
  260. note "7200 bps で接続中..." 2
  261. CommunicatingAt 7200
  262. jump 70
  263. !
  264. @LABEL 43
  265. note "9600 bps で接続中..." 2
  266. CommunicatingAt 9600
  267. jump 70
  268. !
  269. @LABEL 44
  270. note "12400 bps で接続中..." 2
  271. CommunicatingAt 12400
  272. jump 70
  273. !
  274. @LABEL 45
  275. note "14400 bps で接続中..." 2
  276. CommunicatingAt 14400
  277. jump 70
  278. !
  279. @LABEL 46
  280. note "16800 bps で接続中..." 2
  281. CommunicatingAt 16800
  282. jump 70
  283. !
  284. @LABEL 47
  285. note "19200 bps で接続中..." 2
  286. CommunicatingAt 19200
  287. jump 70
  288. !
  289. @LABEL 48
  290. note "21600 bps で接続中..." 2
  291. CommunicatingAt 21600
  292. jump 70
  293. !
  294. @LABEL 49
  295. note "24000 bps で接続中..." 2
  296. CommunicatingAt 24000
  297. jump 70
  298. !
  299. @LABEL 50
  300. note "26400 bps で接続中..." 2
  301. CommunicatingAt 26400
  302. jump 70
  303. !
  304. @LABEL 51
  305. note "28800 bps で接続中..." 2
  306. CommunicatingAt 28800
  307. jump 70
  308. !
  309. @LABEL 59
  310. note "未知のレートで接続中..." 2
  311. jump 70
  312. !
  313. ! Parse the remainder of the PROTOCOL result
  314. !
  315. @LABEL 60
  316. matchclr
  317. matchstr 1 62  "LAP-M"
  318. matchstr 2 62  "MNP"
  319. matchstr 3 62  "ALT"
  320. matchstr 4 32  "¥13"
  321. matchread 10
  322. jump 32
  323. !
  324. ! Parse the remainder of the COMPRESION result
  325. !
  326. @LABEL 61
  327. matchclr
  328. matchstr 1 67  "V.42BIS"
  329. matchstr 2 67  "MNP5"
  330. matchstr 3 67  "CLASS 5"
  331. matchstr 4 32  "¥13"
  332. matchread 10
  333. !
  334. !
  335. ! -- Modem error correction link negotiation --
  336. ! Userhook 2 informs ARA that a modem-to-modem error
  337. ! correcting protocol has been negotiated
  338. !
  339. !
  340. @LABEL 62
  341. note "モデムのリンクが確実に成立しました。" 2
  342. userhook 2
  343. jump 32
  344. !
  345. !
  346. ! -- Compression negotiation --
  347. ! Userhook 3 informs ARA that a modem-to-modem compression
  348. ! protocol has been negotiated
  349. !
  350. @LABEL 67
  351. note "モデムによる圧縮を開始しました。" 2
  352. userhook 3
  353. jump 32
  354. !
  355. !
  356. !
  357. ! -- Normal exit after "CONNECT" --
  358. !
  359. !  This modem has been setup to do CTS handshaking,
  360. !  and we assume that a CTS handshaking cable is being used.
  361. !
  362. @LABEL 70
  363. ! Turn on CTS handshaking.
  364. HSReset 0 1 0 0 0 0
  365. !
  366. ifANSWER 71
  367. pause 30
  368. @LABEL 71
  369. exit 0
  370. !
  371. !
  372. !
  373. ! ---- Answer calls ----
  374. !
  375. !    A RING result from the modem and in ANSWERING mode
  376. !    claims the serial port and answering the phone
  377. !
  378. @LABEL 81
  379. ifORIGINATE 32
  380. !
  381. note "応答中です..." 2
  382. jump 32
  383. !
  384. ! Setup for answering calls
  385. !
  386. @LABEL 82
  387. matchclr
  388. matchstr 1 32  "OK¥13¥10"
  389. matchstr 2 101 "ERROR¥13¥10"
  390. write "ATS0=1¥13"
  391. matchread 30
  392. jump 101
  393. !
  394. !
  395. ! ---- Hang up and reset modem ----
  396. !
  397. @HANGUP
  398. @LABEL 90
  399. settries 0
  400. HSReset 0 0 0 0 0 0
  401. !
  402. @LABEL 92
  403. !  Escape from data to command mode
  404. matchclr
  405. matchstr 1 96 "OK¥13¥10"
  406. write "+++"
  407. matchread 20
  408. !
  409. @LABEL 94
  410. ! Force a hangup
  411. matchclr
  412. matchstr 1 98 "NO CARRIER¥13¥10"
  413. matchstr 2 98 "OK¥13¥10"
  414. matchstr 3 98 "ERROR¥13¥10"
  415. matchstr 4 98 "0¥13¥10"
  416. write "ATH¥13"
  417. matchread 30
  418. ! Try to get control of the modem by toggling DTR
  419. DTRClear
  420. pause 5
  421. DTRSet
  422. flush
  423. !
  424. ! Try the hangup sequence three times otherwise declare and error
  425. inctries
  426. iftries 3 101
  427. jump 92
  428. !
  429. @LABEL 96
  430. ! Pause between data and command mode
  431. pause 50
  432. jump 94
  433. !
  434. !
  435. @LABEL 98
  436. ! Recall the factory settings
  437. pause 15
  438. matchclr
  439. matchstr 1 99 "OK¥13¥10"
  440. write "AT&F¥13"
  441. matchread 30
  442. jump 101
  443. !
  444. @LABEL 99
  445. exit 0
  446. !
  447. ! ---- Error messages -----
  448. !
  449. ! Modem Not Responding
  450. @LABEL 101
  451. exit -6019
  452. !
  453. ! No Dial Tone
  454. @LABEL 102
  455. exit -6020
  456. !
  457. ! No Carrier or Error
  458. @LABEL 103
  459. exit -6021
  460. !
  461. ! Busy
  462. @LABEL 104
  463. exit -6022
  464. !
  465. ! No Answer
  466. @LABEL 105
  467. exit -6023
  468. !
  469. ! GeoPort/Express modem extended errors
  470. !
  471. @LABEL 106
  472. exit -6002 "モデムは使用中です"
  473. !
  474. @LABEL 107
  475. exit -6002 "ダイアルできません"
  476. !
  477. @LABEL 108
  478. exit -6002 "ブラックリスト番号です"
  479. !
  480. @LABEL 109
  481. exit -6002 "回線がつながっていません(Line Current Detected)"
  482. !
  483. @LABEL 110
  484. exit -6002 "回線がつながっていません(No Line Current)"
  485. !
  486. @LABEL 111
  487. exit -6002 "許可されていない番号です"
  488. !
  489. @LABEL 112
  490. exit -6002 "DAA なし"
  491. !
  492. @LABEL 113
  493. exit -6002 "不明な国番号です"
  494. !
  495. ! User Cancellation
  496. @LABEL 120
  497. exit -6008